//导入网络请求加强包
import {$http} from '@escook/request-miniprogram'

const app=getApp()
$http.baseUrl = 'http://localhost:3000'

//请求拦截器
$http.beforeRequest = function(options){
  wx.showLoading({
    title: '数据加载中',
  })
}
// 请求结束
$http.afterRequest = function () {
  wx.hideLoading()
}
// 将http挂载到全局对象wx上
wx.$http = $http
//封装弹窗的方法
wx.$showMsg = function(){
  var title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '数据加载失败！';
  var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1500;
  wx.showToast({
    title:title,
    duration:duration,
    icon:'none'
  })
}
// app.js
App({
  onLaunch() {
    // 检验登录状态
    this.checkLogin(res=>{
      this.globalData.is_login = res.is_login
    })
    // 获取整个导航栏位置、高度等信息
      // 获取系统信息
        const systemInfo = wx.getSystemInfoSync();
        // 获取胶囊按钮的位置信息
        const menuButtonInfo = wx.getMenuButtonBoundingClientRect();
        // 获取各项数据
        this.globalData.navBarHeight = systemInfo.statusBarHeight+44
        this.globalData.menuRight = systemInfo.screenWidth - menuButtonInfo.right
        this.globalData.menuTop = menuButtonInfo.top
        this.globalData.menuHeight = menuButtonInfo.height
  },
  // 检验是否登录
  async checkLogin(cb){
    var token = this.globalData.token
    var userInfo = this.globalData.userInfo
    if(!token||!userInfo){
      // 从缓存中获取token
      userInfo=wx.getStorageSync('userInfo')
      token = wx.getStorageSync('token')
      if(token&&userInfo){
        this.globalData.token = token
        this.globalData.userInfo = userInfo
      }else{
        cb({is_login:false})
      }
    }
    // 发送请求去后端校验
    await wx.request({
      url: 'http://localhost:3000/checklogin',
      data:{
        token:token
      },
      success:(res)=>{
        cb({
          is_login:res.data.is_login
        })
      }
    })
  },
  // 封装一下登录接口
  login(userinfo,cb){
    wx.login({
      success:(res)=>{
        // console.log(res.code);
        wx.request({
          url: 'http://localhost:3000/login',
          method:'POST',
          data:{
            code:res.code,
            userinfo:userinfo
          },
          success:(res)=>{
            // 将token保存为公共数据（多页面使用->全局globalData）
            this.globalData.token = res.data.token
            this.globalData.userInfo = res.data.userInfo
            //检测是否有回调函数，如果有，则执行
            cb()
            // 将token保存在数据缓存中（下次无需重新获取token）
            wx.setStorage({
              key:'token',
              data:res.data.token
            })
            wx.setStorage({
              key:'userInfo',
              data:res.data.userInfo
            })
          }
        })
      }
    })
  },
  globalData: {
    userInfo: null,
    navBarHeight: 0, // 导航栏高度
        menuRight: 0, // 胶囊距右方间距（方保持左、右间距一致）
        menuTop: 0, // 胶囊距底部间距（保持底部间距一致）
        menuHeight: 0, // 胶囊高度（自定义内容可与胶囊高度保证一致）
    // token
    token:null,
    // 登录状态
    is_login:true,
  }
})
